/**
 * 更新数据字典业务逻辑 create by zhuchentong
 * 
 * @2017-04-21
 */
var server = require('config/server')
var constant = require('config/constant')
var net = require('util/net')
var storage = require('util/storage')
var promise = require('lib/promise')
var dict_data = null;
var process = null;

/**
 * 获取字典hash数据
 * 
 * @returns
 */
function getDictHash() {
	net.send({
		server : server.common.get_dict_hash,
		success : function(data) {
			checkDictHash(data)
		},
		error : function(data) {
			process.done()
			log.info(data)
		}
	}, true)
}

/**
 * 检查是否需要更新字典
 * 
 * @param current_hash
 * @returns
 */
function checkDictHash(current_hash) {
	var last_hash = storage.getItem(constant.storage.dict_hash)
	var dict_data = storage.getItem(constant.storage.dict_data)
	// 当不存在数据字典或数据字典不是最新时进行更新
	if (!dict_data || (last_hash !== current_hash)) {
		// 更新本地hash值
		storage.setItem(constant.storage.dict_hash, current_hash)
		// 更新数据字典
		updateDictData()
	} else {
		process.done()
	}
}

/**
 * 获取字典数据
 * 
 * @returns
 */
function updateDictData() {
	net.send({
		server : server.common.get_dict_data,
		success : function(data) {
			storage.setItem(constant.storage.dict_data, data)
		},
		error : function(data) {
			log.info(data)
		},
		callback : function() {
			process.done()
		}
	}, true)
}


/**
 * 获取用户字典数据
 * 
 * @returns
 */
function getDictData() {
	if (!dict_data) {
		dict_data = storage.getItem(constant.storage.dict_data)
	}
	return dict_data
}


/**
 * 更新字典数据
 */
module.exports.update = function() {
	// 生成进程promise
	process = new promise.Promise()
	// 更新字典数据
	getDictHash()

	return process
}



/**
 * 数据字典数据转换
 */
module.exports.getTypeCodeData = function(typeCode) {
	var data = getDictData()

	var result = data.filter(function(x) {
		return x.typeCode == typeCode
	}).map(function(x){
		return x.name
	})
	if (result) {
		return result.join(',')
	} else {
		return ""
	}
}

/**
 * 数据字典数据转换
 */
module.exports.getTypeCodeIdByIndex = function(typeCode,index) {
	var data = getDictData()

	var result = data.filter(function(x) {
		return x.typeCode == typeCode
	}).map(function(x){
		return x.id
	})
	if (result) {
		return result[index]
	} else {
		return ""
	}
}


/**
 * 将id转为对应字典信息
 */
module.exports.typeCodeConvert = function(id) {
	if(!id){
		return ''
	}
	var data = getDictData()

	var result = data.find(function(x) {
		return x.id == id
	})
	if (result) {
		return result.name
	} else {
		return id
	}
}